package com.tang.script;

import com.tang.script.command.ScriptCommandBuilder;
import com.tang.script.functions.FunctionLoader;
import com.tang.script.result.ScriptResult;

import javax.script.CompiledScript;

public interface ScriptEngine extends FunctionLoader {
    public <T> ScriptResult<T> executeScript(ScriptCommand<T> script);

    public ScriptCommandBuilder getScriptCommandBuilder();

    public void setScriptCommandBuilder(ScriptCommandBuilder scriptCommandBuilder);

    public CompiledScript getScript(String key, String scriptText);

    public SystemVariableContainer getSystemVariableContainer();

    public void setSystemVariableContainer(SystemVariableContainer systemVariableContainer);
}